package api.feign;

import api.config.OpenFeignConfig;
import com.lyx.common.param.*;
import com.lyx.common.vo.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * --- Be Humble and Hungry ---
 *
 * @author Liyuexian
 * @date 2024/8/13
 * @desc
 */
@FeignClient(value = "lyx-user",path = "/server/user/",configuration = OpenFeignConfig.class)
public interface UserService {

    /**
     * 校验手机号
     */

    @GetMapping("checkphone")
    R checkPhone(@RequestParam("phone") String phone);
    // 因为 openfeign 是 伪HttpClient 对象，我们在远程调用他的客户端提供的接口时，
    // 并不知道你到底是路径传参还是问号传参，因此需要通过注解的方式来指明传参方式
    /**
     * 发送注册验证码
     */
    @GetMapping("sendrcode")
    R sendRcode(@RequestParam("phone")String phone);

    /**
     * 校验验证码
     */
    @PostMapping("checkrcode")
    R checkRcode(@RequestBody PhoneCode code);

    /**
     * 注册用户
     */
    @PostMapping("register")
    R register(@RequestBody UserAdd add);

    /**
     * 登录用户
     * 唯一登录
     */
    @PostMapping("login")
    R login(@RequestBody UserLogin login);

    /**
     * 用户退出
     */
    @GetMapping("logout")
    R logout();

    /**
     * 查询全部
     */
    @GetMapping("all")
    R queryAll();


    /**
     * 找回发验证码*/
    @GetMapping("findPswSendRcode")
    R findPswSendRcode(@RequestParam("phone")String phone);

    /**
     * 修改密码*/
    @PostMapping("findPassword")
    R findPassword(@RequestBody UserFindPwd user);

    /**
     * 修改用户信息
     */
    @PostMapping("updateinfo")
    R updateInfo(@RequestBody UserUpdateInfo up);

    /**
     * 修改用户密码
     */
    @PostMapping("updatepassword")
    R updatePassword(@RequestBody UserUpdatePsw uup);


    /**
     * 签到
     */
    @GetMapping("signin")
    R signIn(@RequestParam("uid")Integer uid);
}
